//package com.cm.module.system.aspect;
//
//import com.alibaba.fastjson.JSONObject;
//import lombok.extern.slf4j.Slf4j;
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.annotation.*;
//import org.aspectj.lang.reflect.MethodSignature;
//import org.springframework.stereotype.Component;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.servlet.ServletRequest;
//import javax.servlet.ServletResponse;
//import java.lang.reflect.Method;
//
//
//@Slf4j
//@Aspect
//@Component
//public class AddLogAspect {
//
//    @Pointcut("@within(org.springframework.web.bind.annotation.RestController)")
//    public void controllerAspect() {
//        System.out.println(1);
//    }
//
//    /**
//     * 在指定方法执行前打印日志信息
//     *
//     * @param point
//     */
//    @Before("controllerAspect()")
//    public void before(JoinPoint point) {
//        log.info(">>>>>>>>>>>>>>>>>>>>>>开始执行方法，类名：" + getPointClass(point) + ",方法名及参数为：" + getMethodInfo(point));
//    }
//
//    /**
//     * 获取类名
//     *
//     * @param point
//     * @return
//     */
//    private String getPointClass(JoinPoint point) {
//        String className = point.getTarget().getClass().getName();
//        return className;
//    }
//
//    /**
//     * 获取方法信息，包括方法名、方法参数及值
//     *
//     * @param point
//     * @return
//     */
//    private String getMethodInfo(JoinPoint point) {
//        MethodSignature methodName = (MethodSignature) point.getSignature();
//        String[] parameters = methodName.getParameterNames();
//        Object[] argArr = point.getArgs();
//        Method method = methodName.getMethod();
//        String methodInfo = method.getName();
//        if (parameters != null && parameters.length > 0) {
//            methodInfo += "，参数为[ ";
//            for (int i = 0; i < argArr.length; i++) {
//                if (argArr[i] instanceof ServletRequest || argArr[i] instanceof ServletResponse || argArr[i] instanceof MultipartFile) {
//                    continue;
//                }
//                String argClassName = argArr[i].getClass().getName();
//                //如果参数是ServletRequest，则该参数不在日志中打印出来
//                String argName = parameters[i];
//                String argValue = "";
//                if (argArr[i] != null) {
//                    argValue = JSONObject.toJSON(argArr[i]).toString();
//                } else {
//                    argValue = "null";
//                }
//                methodInfo += argName + ":" + argValue + ",";
//            }
//            methodInfo = methodInfo.substring(0, methodInfo.length() - 1);
//            methodInfo += "]";
//        }
//        return methodInfo;
//    }
//
//}
